//
//  CQRefreshControl.swift
//  swift-weibo
//
//  Created by 陈乾 on 15/11/3.
//  Copyright © 2015年 陈乾. All rights reserved.
//

import UIKit

class CQRefreshControl: UIRefreshControl {
    //默认-60 再往下拉 箭头就转向上面 所以要监听frame改变
    let CQConstant:CGFloat  = -60
    
    //搞一个属性监听监听的指向  默认向下
   private var isUp :Bool = false
    
    ///重写父类的frame 监听frame的改变
   override var frame: CGRect {
        didSet{
            
            
            
            //刷新控件跑上面我们看不到了就不要做上面操作了
            if frame.origin.y >= 0 {
               return
            }
            //如果系统的菊花正在刷新 我们就把带箭头的view隐藏 开启核心动画
            if refreshing {
                
                //开始旋转
                refreshView.playRotationView()
            
            }
            
            
            // 当isUp是false !isUp才是真 也就是当前是向下的才能进去
            if frame.origin.y < CQConstant && !isUp {
             // 箭头需要朝上
                //箭头朝上
                isUp = true
                refreshView.rotationArrow(isUp)
                
                
                
            }
            //isUp表示箭头朝上的
            if frame.origin.y > CQConstant && isUp {
             //箭头需要向下
                isUp = false
                refreshView.rotationArrow(isUp)
                
            
            }
            
            
            
        }
    }
    
    //MARK: - 当调用系统的 endRefreshing的时候 我们的旋转要停止
    override func endRefreshing() {
        super.endRefreshing()
        //顺便把我们的旋转的核心动画关闭
        refreshView.stopRotation()
    }
    
    
    //MARK: - 构造方法
    override init() {
     super.init()
     prepareUI()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    //MARK: - 准备UI
    func prepareUI() {
      //添加子控件
     addSubview(refreshView)
      //添加约束
      refreshView.ff_AlignInner(type: ff_AlignType.CenterCenter, referView: self, size: refreshView.bounds.size)
    
    }
    
    //MARK: - 懒加载
    private lazy var refreshView: CQRefreshView = CQRefreshView.loadRefreshViewFormXib()

}
